<?php
/**
 * 查询构建器 find() select()
 * ORM get() all()
 */

namespace app\api\model;

use app\common\enum\FlagEnum;
use think\Db;


class Sku extends BaseModel
{
//    protected $append = [
//        'flag' => FlagEnum::Multiple
//    ];
//
//    public function getFlagAttr($value, $data)
//    {
//        return $value;
//    }

    public function ss()
    {
        return $this->hasMany('SkuSpecs', 'sku_id', 'id');
    }

    /**
     * 简单实现，后期优化
     */
    public function getSpecsAttr($value, $data)
    {

//
//        $original = [
//            [
//                'id' => 1,
//                'product_id' => 1,
//                'sku_id' => 1,
//                'spec_key_id' => 1,
//                'spec_value_id' => 1,
//            ],
//            [
//                'id' => 2,
//                'product_id' => 1,
//                'sku_id' => 1,
//                'spec_key_id' => 2,
//                'spec_value_id' => 3
//            ],
//        ];
//        $temp = [
//            [
//                'spec_key_id' => 1,
//                'spec_value_id' => 1,
//                'key' => '颜色',
//                'value' => '银色',
//            ],
//            [
//                'spec_key_id' => 2,
//                'spec_value_id' => 3,
//                'key' => '容量',
//                'value' => '全网通64GB',
//            ]
//        ];
//        $sku = self::with('specifications')->find($data['id']);


        if(!$value) {
            $temp = [];
            $sku_specs = SkuSpecs::all(['sku_id' => $data['id']]);
            $res = $sku_specs->toArray();
            foreach ($res as $i => $items) {
                foreach ($items as $key => $val) {
                    if ($key == 'spec_key_id') {
                        $temp[$i][$key] = $val;
                        $r = SpecKey::field('name')->find($val)->toArray();
                        $temp[$i]['key'] = $r['name'];
                    }
                    if ($key == 'spec_value_id') {
                        $temp[$i][$key] = $val;
                        $r = SpecValue::field('name')->find($val)->toArray();
                        $temp[$i]['value'] = $r['name'];
                    }
                }
            }
//            Db::table('sku')->where('id', '=', $data['id'])->update(['specs' => json_encode($temp)]);
            return $temp;
        }else{
            return $value;
        }
    }

    public function getImgAttr($value, $data)
    {
        return $this->img_prefix($value, $data);
    }

}